import CryptoJS from 'crypto-js'

// AES 加密配置
const AES_KEY = 'kR9X6aNf2Yq4Ht7P' // 16位密钥
const AES_IV = 'Jm3nKp8v5Uy2Wx4Z'  // 16位向量

/**
 * AES 加密
 * @param {Object|string} data - 需要加密的数据
 * @returns {string} - 加密后的字符串
 */
export const encrypt = (data) => {
  // 如果是对象，先转为字符串
  const str = typeof data === 'object' ? JSON.stringify(data) : String(data)
  
  // 创建加密配置
  const key = CryptoJS.enc.Utf8.parse(AES_KEY)
  const iv = CryptoJS.enc.Utf8.parse(AES_IV)
  console.log(key,'key');
  console.log(iv,'iv');
  
  
  // 加密
  const encrypted = CryptoJS.AES.encrypt(str, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })
  
  // 返回 base64 格式的加密字符串
  return encrypted.toString()
}

/**
 * AES 解密
 * @param {string} encryptedStr - 加密的字符串
 * @returns {string} - 解密后的数据
 */
export const decrypt = (encryptedStr) => {
  // 创建加密配置
  const key = CryptoJS.enc.Utf8.parse(AES_KEY)
  const iv = CryptoJS.enc.Utf8.parse(AES_IV)
  
  // 解密
  const decrypted = CryptoJS.AES.decrypt(encryptedStr, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })
  
  // 转换为 utf8 字符串
  return decrypted.toString(CryptoJS.enc.Utf8)
} 